Problem In cnn model

by: cse140001027, 7 years ago


I am getting the following error and can not figure it out

InvalidArgumentError (see above for traceback): Expected begin[0] == 0 (got -1) and size[0] == 0 (got 1) when input.dim_size(0) == 0
[[Node: Slice_1 = Slice[Index=DT_INT32, T=DT_INT32, _device="/job:localhost/replica:0/task:0/cpu:0"](Shape_2, Slice_1/begin, Slice_1/size)]]

My code is

import tensorflow as tf
import scipy.io.wavfile as wav
import numpy as np
from spect import create_spect_labels
fs, audio=fs, audio=wav.read('hey_mono.wav')
feature=create_spect_labels(audio, [0,1])
freqbins, timebins =np.shape(feature[0][0])
n_classes = 2
hm_epochs = 4
batch_size=100
test_size = int(timebins*0.1)
train_x=[]
train_y=[]
test_x=[]
test_y=[]
for i in range(timebins-test_size):
li=[]
for j in range(freqbins):
li.append(feature[0][0][j][i])
train_x.append(li)
train_y.append(feature[0][1])
for i in range(test_size):
li=[]
for j in range(freqbins):
li.append(feature[0][0][j][i+timebins-test_size-1])
test_x.append(li)
test_y.append(feature[0][1])
print(np.shape(test_y),np.shape(train_y))
#print(train_x)
train_y=feature[0][1]
x = tf.placeholder('float',[None,1025])
y = tf.placeholder(tf.float32)

#keep_rate = 0.8
#keep_prob = tf.placeholder(tf.float32)

def conv2d(x, W):
    return tf.nn.conv2d(x, W, strides=[1,2,2,1], padding='SAME')

def maxpool2d(x):
    #                        size of window         movement of window
    return tf.nn.max_pool(x, ksize=[1,2,2,1], strides=[1,2,2,1], padding='SAME')



def neural_network_model(x):
    weights = {'W_conv1':tf.Variable(tf.random_normal([5,5,1,32])),
               'W_conv2':tf.Variable(tf.random_normal([5,5,32,64])),
               'W_fc':tf.Variable(tf.random_normal([65*1*64,1024])),
               'out':tf.Variable(tf.random_normal([1024, n_classes]))}

    biases = {'b_conv1':tf.Variable(tf.random_normal([32])),
               'b_conv2':tf.Variable(tf.random_normal([64])),
               'b_fc':tf.Variable(tf.random_normal([1024])),
               'out':tf.Variable(tf.random_normal([n_classes]))}

    x = tf.reshape(x, shape=[-1, freqbins, batch_size, 1])

    conv1 = tf.nn.relu(conv2d(x, weights['W_conv1']) + biases['b_conv1'])
    conv1 = maxpool2d(conv1)
    
    conv2 = tf.nn.relu(conv2d(conv1, weights['W_conv2']) + biases['b_conv2'])
    conv2 = maxpool2d(conv2)

    fc = tf.reshape(conv2,[-1, 65*1*64])
    fc = tf.nn.relu(tf.matmul(fc, weights['W_fc'])+biases['b_fc'])
#   fc = tf.nn.dropout(fc, keep_rate)

    output = tf.matmul(fc, weights['out'])+biases['out']

    return output

def train_neural_network(x):
prediction = neural_network_model(x)
print(np.shape(prediction))
cost = tf.reduce_mean( tf.nn.softmax_cross_entropy_with_logits(labels=y,logits=prediction) )
optimizer = tf.train.AdamOptimizer(learning_rate=0.001).minimize(cost)

with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
    
for epoch in range(hm_epochs):
epoch_loss = 0
i=0
while i < len(train_x):
start = i
end = i+batch_size
batch_x = np.array(train_x[start:end])
batch_y = np.array(train_y[1])

_, c = sess.run([optimizer, cost], feed_dict={x: batch_x,y: batch_y})
epoch_loss += c
i+=batch_size

print('Epoch', epoch+1, 'completed out of',hm_epochs,'loss:',epoch_loss)
correct = tf.equal(tf.argmax(prediction, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(correct, 'float'))

print('Accuracy:',accuracy.eval({x:test_x, y:test_y}))

train_neural_network(x)




You must be logged in to post. Please login or register an account.